import os
import sys


L, N, M = map(int, input().split())
d = []
for i in range(N):
  d.append(int(input()))
d.append(L)


#假设最短跳跃距离为x， 移除的石头数量不超过M时，合法，否则不合法
def check(x):
  #the number of rocks already moved
  cnt = 0
  last_idx = 0
  for i in range(N+1):
    if d[i] - last_idx >= x:
      last_idx = d[i]
    else:
      cnt += 1
  return cnt <= M


left, right = 1, L
ans = -1
while left <= right:
  mid = (right + left) // 2
  if check(mid):
    ans = mid
    left = mid + 1
  else:
    right = mid - 1

print(ans)